Итак, наша задача добавить класс.
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.IO;
class MainClass
{
public static void Main(string[] args)
{
CodeCompileUnit compileunit = new CodeCompileUnit();
CodeNamespace Samples = new CodeNamespace("Samples");
CSharpCodeProvider cs = new CSharpCodeProvider();
CodeGeneratorOptions go = new CodeGeneratorOptions();
ICodeGenerator ic= cs.CreateGenerator();
CodeTypeDeclaration Class1 = new CodeTypeDeclaration("MyClass1");
CodeTypeDeclaration Class2 = new CodeTypeDeclaration("MyClass2");
Samples.Types.Add(Class1);
Samples.Types.Add(Class2);
Stream ss=File.OpenWrite("d:\\test.txt");
StreamWriter s = new StreamWriter(ss);
compileunit.Namespaces.Add(Samples);
ic.GenerateCodeFromCompileUnit(compileunit,s,go);
s.Close();
ss.Close();
}
}
Класс CodeTypeDeclaration используется для объявления новых структур или классов. После этого мы можем добавить объект к нашему рабочему пространству Samples.Types.Add.
Вот такой будет результат.
//------------------------------------------------------------------------------
// <autogenerated>
// This code was generated by a tool.
// Runtime Version: 1.0.2914.16
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------
namespace Samples {
public class MyClass1 {
}
public class MyClass2 {
}
}